#if 0 unused code for tlb management.
Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
{
extern void __devinit ia64_mmu_init (void *);
unsigned long num_phys_stacked;
+#ifndef XEN
pal_vm_info_2_u_t vmi;
unsigned int max_ctx;
+#endif
struct cpuinfo_ia64 *cpu_info;
void *cpu_data;
normal_xtp();
#endif
+#ifndef XEN
/* set ia64_ctx.max_rid to the maximum RID that is supported by all CPUs: */
if (ia64_pal_vm_summary(NULL, &vmi) == 0)
max_ctx = (1U << (vmi.pal_vm_info_2_s.rid_size - 3)) - 1;
if (cmpxchg(&ia64_ctx.max_ctx, old, max_ctx) == old)
break;
}
+#endif
if (ia64_pal_rse_info(&num_phys_stacked, NULL) != 0) {
printk(KERN_WARNING "cpu_init: PAL RSE info failed; assuming 96 physical "
on_each_cpu((void (*)(void *))local_flush_tlb_all, NULL, 1, 1);
}
+#ifndef XEN
void
smp_flush_tlb_mm (struct mm_struct *mm)
{
preempt_disable();
/* this happens for the common case of a single-threaded fork(): */
-#ifdef XEN
- if (likely(mm == current->domain->arch.mm
- && atomic_read(&mm->mm_users) == 1))
-#else
if (likely(mm == current->active_mm && atomic_read(&mm->mm_users) == 1))
-#endif
{
local_finish_flush_tlb_mm(mm);
preempt_enable();
*/
on_each_cpu((void (*)(void *))local_finish_flush_tlb_mm, mm, 1, 1);
}
+#endif
/*
* Run a function on another CPU
unsigned long max_bits; /* log2() of largest supported purge page-size */
} purge;
+#ifndef XEN
struct ia64_ctx ia64_ctx = {
.lock = SPIN_LOCK_UNLOCKED,
.next = 1,
void
wrap_mmu_context (struct mm_struct *mm)
{
-#ifdef XEN
-printf("wrap_mmu_context: called, not implemented\n");
-#else
unsigned long tsk_context, max_ctx = ia64_ctx.max_ctx;
struct task_struct *tsk;
int i;
put_cpu();
}
local_flush_tlb_all();
-#endif
}
+#endif /* XEN */
void
ia64_global_tlb_purge (unsigned long start, unsigned long end, unsigned long nbits)
}
EXPORT_SYMBOL(local_flush_tlb_all);
+#ifndef XEN
void
flush_tlb_range (struct vm_area_struct *vma, unsigned long start, unsigned long end)
{
-#ifdef XEN
-printf("flush_tlb_range: called, not implemented\n");
-#else
struct mm_struct *mm = vma->vm_mm;
unsigned long size = end - start;
unsigned long nbits;
# endif
ia64_srlz_i(); /* srlz.i implies srlz.d */
-#endif
}
EXPORT_SYMBOL(flush_tlb_range);
+#endif
void __devinit
ia64_tlb_init (void)
# define flush_tlb_all() local_flush_tlb_all()
#endif
+#ifndef XEN
static inline void
local_finish_flush_tlb_mm (struct mm_struct *mm)
{
#define flush_tlb_kernel_range(start, end) flush_tlb_all() /* XXX fix me */
+#endif /* XEN */
+
#ifdef XEN
extern void flush_tlb_mask(cpumask_t mask);
#endif